User:P.A./Panel-based Download Manager
Status
Panel-based Download Manager | |
Stage | Landed |
Status | Complete |
Release target | Firefox 20 |
Health | OK |
Status note | In beta, go to release. |
Team
Product manager | Asa Dotzler |
Directly Responsible Individual | Marco Bonardo |
Lead engineer | Paolo Amadini, Mike Conley |
Security lead | ` |
Privacy lead | ` |
Localization lead | ` |
Accessibility lead | ` |
QA lead | Simona Badau |
UX lead | Alexander Limi |
Product marketing lead | ` |
Operations lead | ` |
Additional members | Sinchan Banerjee, Stephen Horlander, Shawn Wilsher, Mehdi Mulani, Jared Wein |
Open issues/risks
`
Stage 1: Definition
1. Feature overview
THE DOWNLOADS PANEL HAS BEEN RELEASED IN FIREFOX 20.
YOU CAN READ MORE ABOUT THE FEATURE IN THE INTRODUCTORY BLOG POST.This is the detailed technical feature page for the Downloads Panel. This feature is part of the download user experience improvements.
The current Download Manager user interface is not optimized for several common use cases, and is not yet integrated with the latest Firefox user experience design. Integrating this interface with the latest design is the first step to improve the downloads user experience.
In the new design, an easily accessible panel shows you current state of downloads, your recent downloads, and gives you a good indicator of how far along your download is. Advanced operations like searching, clearing entries, sorting, and everything else related to download history is integrated with the interface for browsing history.
Goals
- Fit in with the overall goals of download user experience improvements.
- Remove the need for a separate Download Manager window.
- Unify download history with browsing history.
- Support common use cases, but not necessarily all of those supported previously.
- Improve the user interface code, and use asynchronous database queries.
2. Users & use cases
- Downloading and running a setup program (Bug 564934, comment 68 and attachment 467459).
We also probably want to consider some, but not all, of the use cases previously suggested for the Download Manager. Note that the current Download Manager does not support all of suggested use cases, while some of them are in the scope of different download user experience improvements.
3. Dependencies
`
4. Requirements
`
Non-goals
- Power user fuctionality, like handling many concurrent downloads.
- File management, except for showing where the target file is located.
- Improve download performance or general front-end responsiveness.
- Note that we still don't want to introduce significant regressions.
- Improve the Download Manager or Places back-end C++ code, or make it asynchronous.
- Any other improvement already defined as download user experience improvements.
- For example, streamlining the entire download process.
Stage 2: Design
5. Functional specification
`
6. User experience design
We'll reach the stated goals by adding a panel for handling the most recent downloads, anchored to a status indicator in the main browser window, and moving the interface for handling all downloads to a new Downloads predefined folder in the Library window.
In the following sections, entries are marked with these indicators:
- [ON TRACK] Not yet implemented.
- [INPUT] Needs design feedback, or a prototype implementation to understand what to do.
- [DONE] Has an initial implementation that can be tested.
Downloads indicator
Provides a status overview, visible during normal browsing when there are download notifications.
- [DONE] Always visible by default, located on the navigation bar, between the search bar and the home button.
- [DONE] When there are no active downloads, shows the classic button icon (downwards arrow).
- [DONE] When there are active downloads, shows a progress bar and a compact indication of the remaining time, if known.
Provides visual indication of new downloads or completed downloads.
- [DONE] New downloads are notified with a brief animation near the indicator.
- [DONE] Finished or failed downloads make the indicator glow until the panel is displayed.
- [DONE] The usual screen-level notification is shown when all downloads are completed.
- Note that this is shown even when the indicator is visible.
Provides the anchor for the panel.
- [DONE] If the indicator is removed from the toolbars, or is located in an invisible toolbar, the panel will never be displayed.
- [DONE] In this case, the full download management interface will be shown when a new download is started.
- [DONE] User-initiated requests to show downloads will always open the Downloads view in the Library window, regardless of indicator visibility.
Downloads panel
The entries in the popup panel are just notifications saying that a download is going on, and that a download has finished.
The panel works as follows:
- [DONE] The panel should be shown automatically for the first download after the feature is enabled, for discoverability.
- [DONE] Only a few recent downloads are shown in the panel, thus not all the current downloads can be managed from the panel.
- This must ensure that the panel does not expand to the full screen height when opened in a maximized window.
- [DONE] Notifications are sorted by start time, most recent first.
- It's consistent with notification sorting in other platforms, and the order doesn't change unexpectedly while the panel is open.
- [DONE] The panel contains a link to the full list of downloads.
- [DONE] The panel is fixed-width.
- Resizeability is not as much of an issue with the downloads panel as it is with the bookmarks panel, because the downloads panel is less of a "management" interface. The full title of a download is shown in a tooltip.
- [DONE] When there are no download items, the panel's width can be smaller.
Individual notifications have the following behavior:
- Notifications should disappear as soon as the user is done with them. We can't know the exact moment, so we use a set of heuristics.
- [DONE] Completed downloads are removed from the list when the last browser window is closed.
- Active downloads are never removed from the list automatically, though they can be hidden by most recent downloads.
- Completed downloads are not restored if the previous session is restored. They can still be accessed from the Downloads view in the Library window.
- [DONE] Canceling a running download does not make the notification disappear.
- [DONE] Manually removing a download from the list is possible, but not a top-level interaction.
- [DONE] Completed downloads are removed from the list when the last browser window is closed.
- There are no actions that make sense on more than one notification at a time.
- [DONE] The height of each notification does not change when its state changes.
The layout of a notification includes a main area with the download's distinctive details, and an optional action button. In some states of the download, the main area can be clicked. Double-clicking the main area, instead, is not a supported interaction.
A context menu for the item can always be displayed. It may contain commands already available through a top-level interaction for consistency.
- [DONE] When the main area can be clicked, a link-style mouse cursor is displayed on hover.
- When the download is ongoing [not paused or finished or canceled]:
- [DONE] The button cancels the download.
- [DONE] The context menu has commands to pause, open containing folder, go to download page, copy download link.
- When the download is paused:
- [DONE] The button cancels the download.
- [DONE] The context menu has commands to resume, open containing folder, go to download page, copy download link.
- When the download is failed or canceled:
- [DONE] The button retries the download. Often, the download will resume from where it stopped, if supported by the server.
- [DONE] The context menu has commands to remove from list, go to download page, copy download link.
- When the download has finished:
- [DONE] Clicking the main area opens the file.
- [ON TRACK] If the target file is missing, the main area should not be clickable. The existence detection should happen in the background.
- [DONE] The button opens the containing folder.
- [DONE] The context menu has commands to remove from list, go to download page, copy download link.
- [DONE] Clicking the main area opens the file.
There are additional items in the context menu that act on all downloads:
- [DONE] A context menu item is available for removing completed downloads from the list, without closing the last browser window.
Library window
The Library window allows the user to see the full list of downloads. The user can control ongoing downloads, as well as finding and opening previous downloads.
The interaction with ongoing downloads is different from the standalone Downloads window. The interaction will be more similar to the Downloads Panel.
- [DONE] When the user selects the Downloads folder, the list of history pages is replaced with a different view for handling current downloads.
- The Downloads view shows both ongoing downloads and download history.
- [INPUT] Items are sorted based on the current criteria, selected by the user.
- [DONE] Items can be found at least by source location or original target file name.
- [DONE] Most ongoing downloads should also be present in the browsing history, in which case they are shown in the same position as the history item.
- If there is no specific matching history item, ongoing downloads might be shown in no particular order.
- [DONE] History items with no matching current download behave in the same way as completed downloads.
- [DONE] Download items have an interaction similar to the Downloads Panel items.
- [DONE] The items contain the same elements as the panel items, based on the current download state.
- The interaction will also be different from history items in other Library views.
Stage 3: Planning
7. Implementation plan
`
8. Reviews
Security review
`
Privacy review
`
Localization review
`
Accessibility
`
Quality Assurance review
`
Operations review
`
Stage 4: Development
9. Implementation
Bugs list and patch queue
Feature tracking bug:
- bug 564934 (see also the status page)
Relevant patches that are available in nightly builds:
The feature is now available in standard release trains. Key implementation bugs are:
- bug 726444: Implement the Downloads Panel.
- bug 675902: New Downloads view for Places Library.
Additional patches needed to test the feature:
- None. The feature is now available in standard release trains.
Work required to release and enable the feature for everyone:
- Bugs listed as blocking bug 747422 (completed).
Follow-ups
This section lists non-blocking, suggested follow-ups that need more work before filing a proper bug. Often a search for existing bugs is required before filing a separate bug.
Description | References |
Cu.import failures don't show up in the Error Console, or the test logs. | Bug 564934, comment 224 |
No feedback when the "open download page" link is clicked and the target page is not available. | Bug 564934, comment 191 |
Allow asynchronous termination functions in the testing framework. | Bug 564934, comment 259 Scroll to @@ +47,5 @@ |
Move original nsDownloadManagerUI.js to mozapps/downloads. | Bug 564934, comment 192 |
NetUtil.newURI should QueryInterface to nsIFileURL automatically. | Bug 564934, comment 286 |
Move fileExecutableSecurityWarning to a common place in Toolkit. |
Stage 5: Release
10. Landing criteria
`
Feature details
Priority | P2 |
Rank | 4 |
Theme / Goal | Experience |
Roadmap | Firefox Desktop |
Secondary roadmap | ` |
Feature list | Desktop |
Project | ` |
Engineering team | Desktop front-end |
Team status notes
status | notes | |
Products | ` | ` |
Engineering | ` | ` |
Security | sec-review-complete | Notes |
Privacy | ` | ` |
Localization | ` | ` |
Accessibility | ` | ` |
Quality assurance | ` | Test Plan |
User experience | ` | ` |
Product marketing | ` | ` |
Operations | ` | ` |